package com.itmuch.contentcenter.tcc.action.impl;

import com.itmuch.contentcenter.tcc.action.ResultHolder;
import com.itmuch.contentcenter.tcc.action.TccActionOne;
import io.seata.rm.tcc.api.BusinessActionContext;
import org.springframework.stereotype.Component;

@Component
public class TccActionOneImpl implements TccActionOne {
    @Override
    public boolean prepare(BusinessActionContext actionContext, int a) {
        // 预留库存、创建未确认的订单

        // 这里是本地玩的，也可以调用其他微服务的接口
        String xid = actionContext.getXid();
        System.out.println("TccActionOne prepare, xid:" + xid);
        return true;
    }

    @Override
    public boolean commit(BusinessActionContext actionContext) {
        // 库存扣减、将订单状态改为创建成功

        // 这里是本地玩的，也可以调用其他微服务的接口
        String xid = actionContext.getXid();
        System.out.println("TccActionOne commit, xid:" + xid);
        ResultHolder.setActionOneResult(xid, "T");
        return true;
    }

    @Override
    public boolean rollback(BusinessActionContext actionContext) {
        // 库存恢复、将订单状态恢复

        // 这里是本地玩的，也可以调用其他微服务的接口
        String xid = actionContext.getXid();
        System.out.println("TccActionOne rollback, xid:" + xid);
        ResultHolder.setActionOneResult(xid, "R");
        return true;
    }
}
